
# coding: utf-8

# In[2]:

import os
os.chdir("D:\\USPTO\\BULK\\2002-2004") # XML 파일이 있는 폴더 


from xml.dom.minidom import parseString
import re

def process_single_xml_file(filename, writeon):
    xml_file = open(filename, 'r', encoding = "ISO-8859-1").read()
    xml_list = re.split('<\?xml.*?\?>', xml_file)    # 한 xml_file을 특허별로 나누어줌
    
    index = 1

    for one_xml in xml_list:

        if index > 1:

            dom = parseString(one_xml)
            B110 = dom.getElementsByTagName("B110")[0]
            pid = B110.getElementsByTagName("PDAT")[0].firstChild.nodeValue
            
            
            
            B510 = dom.getElementsByTagName("B510")[0]
            B511 = B510.getElementsByTagName("B511")[0]
            ipc = B511.getElementsByTagName("PDAT")[0].firstChild.nodeValue
            

            if pid[0]=='0': writeon.write(pid[1:] + '*' + ipc + '\n') 
                     
            # print(pid)    # 문제가 발생한 특허를 확인하려면 이 기능을 키고 돌릴 것
        index += 1
        

def select_files_in_folder(dir, ext):
    for file in os.listdir(dir):    # 'dir'에 있는 모든 파일들 이름으로 list를 만듦
        if file.endswith('.%s' % ext):    # 확장자가 .ext인 파일일 경우 True
            yield os.path.join(dir, file)    # 'dir/file' 형태의 새로운 dir를 뱉어냄
            
# 'dir' 안에 확장자가 '.ext'인 모든 file들로 이루어진 generator(한번 iterate 시키고 나면 사라지는 list)를 만드는 함수

file = open("2002_2004.csv", 'w', encoding = "utf8")

for xmlfile in select_files_in_folder("D:\\USPTO\\BULK\\2002-2004", 'xml'):
    print(xmlfile)
    process_single_xml_file(xmlfile, file)

print("DONE")
file.close()


